// 防抖函数 在事件触发n秒后执行 如果在n秒范围内再次触发，则重新计时
export const debounce = function (fn: Function, wait: number) {
  let timer: number | null = null

  return function (this: any) {
    const context = this
     /* eslint-disable */ 
    const args = arguments
    if (timer) {
      clearTimeout(timer)
      timer = null
    }
    timer = window.setTimeout(function () {
      fn.apply(context, args)
    }, wait)
  }
}

// 节流函数 在n的时间范围内只会执行一次
export const throttle = function (fn: Function, wait: number) {
  let _lastTime: number | null = null

  return function () {
    const _nowTime = +new Date()
    if (!_lastTime || _nowTime - _lastTime > wait) {
      fn()
      _lastTime = _nowTime
    }
  }
}
